package com.powernode.factory;

import com.powernode.strategy.LoginStategy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * 登陆策略工厂类
 */
@Component
public class LoginStrategyFactory {

    /**
     * spring管理IOC容器是通过key-value的形式来管理bean的，key是bean的id，value是bean的实例对象
     * 因此可以通过获取map的key来获取对应的bean实例对象
     * 登录策略实现类已经放到IOC容器中进行管理了，所以可以通过map的key来获取对应的bean实例对象
     *
     */
    @Autowired
    private Map<String,LoginStategy> loginStategyMap = new HashMap<>();

    /**
     * 根据用户登陆类型获取对应的策略
     * @param loginType
     * @return
     */
    public LoginStategy getInstance(String loginType) {
        return loginStategyMap.get(loginType);
    }
}
